package com.itheima.a12test6;

import com.itheima.a11test5.MyRunable;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class Server {
    public static void main(String[] args) throws IOException {
        //客户端：将本地文件上传到服务器。接收服务器的反馈。
        //服务器：接收客户端上传的文件，上传完毕之后给出反馈。
        //（线程池）

        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                3,//核心线程数
                40,//最大线程数
                60,//具体时间（值）
                TimeUnit.SECONDS,//具体时间（单位）
                new ArrayBlockingQueue<>(2),//阻塞队列
                Executors.defaultThreadFactory(),//线程工厂，让线程池如何创建线程对象
                new ThreadPoolExecutor.AbortPolicy()//拒绝策略
        );

        //1.创建ServerSocket对象并绑定10001端口
        ServerSocket ss = new ServerSocket(10001);

        while (true) {
            //2.等待客户端的连接
            Socket socket = ss.accept();

            pool.submit(new MyRunable(socket));
        }
    }
}
